Distributed transactions are often performed on distributed computing systems. A distributed transaction is a set of operations that update shared resources. Distributed transactions must satisfy the properties of Atomicity, Consistency, Isolation and Durability, known commonly as the ACID properties. According to the Atomicity property, either the transaction successfully executes to completion, and the effects of all operations are recorded, or the transaction fails. The Consistency property requires that the transaction does not violate integrity constraints of the shared resources. The Isolation property requires that intermediate effects of the transaction are not detectable to concurrent transactions. Finally, the Durability property requires that changes to shared resources due to the transaction are permanent.
After an application has been compiled and deployed, an administrator may determine that the application should be transactional. The administrator then modifies the source code of the application to make classes (and objects that inherit from them) within the application transactional. A transactional object is defined herein as an object that can participate in transactions. A transactional object may include semantics for participating in transactions, such as methods for rolling back and committing state changes associated with a transaction. Conventionally, an object cannot be transformed into a transactional object if the administrator does not have access to the source code for the application. Even if he does have the source code, changing the source code takes time, and can be error prone.
Some transaction systems include tools to aid in turning ordinary objects into transactional objects. However, such tools still require that the code of the objects be modified. Moreover, such tools are used at compile time (when an application is being compiled). Conventional transaction systems do not include mechanisms to change an ordinary object into a transactional object at runtime (during the execution of an application).